package cn.myblog.ainblog.service;

import cn.myblog.ainblog.mapper.ArticleTagMapper;
import cn.myblog.ainblog.mapper.TagMapper;
import cn.myblog.ainblog.model.TagModel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author Dovaior
 * @Description tag的Service层
 * @create 2021-04-07 11:30
 **/
@Service
public class TagService {
    @Autowired
    private TagMapper tagMapper;
    @Autowired
    private ArticleTagMapper articleTagMapper;

    /**
     * 分页查询
     * @param page
     * @return
     */
    public IPage<TagModel> selectTagPage(IPage<TagModel> page){
        return tagMapper.selectPage(page,null);
    }

    /**
     * 添加标签
     * @param tagModel
     * @return
     */
    public int addTag(TagModel tagModel){
        return tagMapper.insert(tagModel);
    }

    /**
     * 根据条件查询某一条数据，用于检测是否之前添加过某标签
     * @param queryWrapper
     * @return
     */
    public TagModel selectByName(QueryWrapper<TagModel> queryWrapper){
        return tagMapper.selectOne(queryWrapper);
    }

    /**
     * 根据ID值查询
     * @param tagId
     * @return
     */
    public TagModel selectById(String tagId){
        return tagMapper.selectById(tagId);
    }

    /**
     * 更新标签信息
     * @param tagModel
     * @return
     */
    public int updateTag(TagModel tagModel){
        return tagMapper.updateById(tagModel);
    }

    /**
     * 根据ID值删除
     * @param tagId
     * @return
     */
    public int deleteById(String tagId){
        return tagMapper.deleteById(tagId);
    }

    /**
     * 查询全部的tag名，用于在添加博文页面展示
     * @return
     */
    public List<TagModel> selectAllTag(){
        return tagMapper.selectList(null);
    }

    /**
     * 根据tagId查询articleId，主要用于删除标签时的检测（查看是否有博文引用该标签）
     * @param tagId 根据tagId查询
     * @return 返回标志
     */
    public boolean queryArticleIdByTagId(String tagId){
        boolean flag = true;
        //查询出的articleId的集合
        List<String> articleList = articleTagMapper.queryArticleIdByTagId(tagId);
        if (articleList.size() != 0){
            //说明有博文引用该标签
            flag = true;
        }else{
            //没有博文引用该标签
            flag = false;
        }
        return flag;
    }

    /**
     * 前端页面标签的动态显示
     * @return 返回查询出来的集合
     */
    public List<TagModel> queryAllTag(){
        return tagMapper.queryAllTag();
    }
}

